package com.controller;

import java.util.Iterator;
import java.util.List;

import com.DAO.UsuarioDAO;
import com.model.Usuario;
import com.util.HibernateUtil;
import com.vaadin.data.util.BeanItemContainer;
import com.view.UsuarioView;

public class UsuarioController {

	BeanItemContainer <Usuario> beans;
	UsuarioView usuarioView;
	
	public UsuarioController(){
		
		usuarioView = new UsuarioView(this);
		usuarioView.tabelaFiltro.tableMain.setContainerDataSource(ListaBens());
		usuarioView.tabelaFiltro.tableMain.setVisibleColumns(new Object[]{"cpf","nome"});
	
	}
	
	
	
	public BeanItemContainer ListaBens(){
		beans = new BeanItemContainer<Usuario>(Usuario.class);

		org.hibernate.Session s = HibernateUtil.openSession();
		UsuarioDAO usuarioDAO = new UsuarioDAO(s, Usuario.class);
	  
		List workouts = usuarioDAO.list();
		for (Iterator iterator = workouts.iterator(); iterator.hasNext();) {
			Usuario wo = (Usuario) iterator.next();
			beans.addBean(wo);
		}
		
		 s.close();
			
		return beans;
	}

	public void filtro(String nome){
		beans.removeAllContainerFilters();
		beans.addContainerFilter("nome", nome, true, false);
	}
	
	public boolean salvar(Object[] dados){
		  	
			Boolean resultado;
		    Long cpf = (Long) dados[0];
		    String nome = (String) dados[1];
		    String senha = (String) dados[2];
		   
		    try{	  
		    	Usuario u = new Usuario();
		    	u.setCpf(cpf);
		    	u.setSenha(senha);
		    	u.setNome(nome);
			
		    	org.hibernate.Session s = HibernateUtil.openSession();
		    	UsuarioDAO usuarioDAO = new UsuarioDAO(s, Usuario.class);
		    	s.beginTransaction().begin();
		    	usuarioDAO.save(u);
		    	s.beginTransaction().commit();
		    	s.close();
		    	beans.addBean(u);
		    	resultado = true;
		    }
		    catch (Exception e) {
				// TODO: handle exception
		    	resultado = false;
			}
		    return resultado;
	}
	
	public UsuarioView getView(){
		return this.usuarioView;
	}
}
